package belleza.relativa

import belleza.relativa.security.User

class PerfilPrivadoController {

    def springSecurityService

    def redNeuronalOriginalService

    def indexEntrenar() {
        redirect(action: "entrenar")
    }

    def indexUsuario() {
        User user = springSecurityService.getCurrentUser() as User
        def personas = redNeuronalOriginalService.getUsuariosAceptables(user.id, 10)
        List<Persona> personasRecomendadas = new ArrayList<Persona>()
        for (Integer i: personas) {
            User usuario = User.findById(i)
            if (usuario == null) continue
            Persona persona = usuario.getPersona()
            if (persona == null) continue
            personasRecomendadas.add(persona)
        }
        render(view: 'perfilPrivadoUsuario', model: [persona: user.persona, personasRecomendadas: personasRecomendadas])
    }

    def indexInvitado() {
        def personas = redNeuronalOriginalService.getUsuariosAceptables(getSession().getValue("idInvitado"), 10)
        List<Persona> personasRecomendadas = new ArrayList<Persona>()
        for (Integer i: personas) {
            User usuario = User.findById(i)
            if (usuario == null) continue
            Persona persona = usuario.getPersona()
            if (persona == null) continue
            personasRecomendadas.add(persona)
        }
        def foto = redNeuronalOriginalService.getNumeroImagenEntrenamiento(getSession().getValue("buscoInvitado") == "F" ? 1 : 0)
        render(view: 'perfilPrivadoInvitado', model: [fotoId: foto, personasRecomendadas: personasRecomendadas])
    }

    def indexEntrenate() {
        redirect controller: 'entrenamiento', action: 'index'
    }

    def indexSolicitudesPendientes() {
        redirect controller: 'solicitudesPendientes', action: 'index'
    }

    def cargarFotos() {
        def fotoInstance = Foto.create()
        render(view: 'cargaFotosUsuario', model: [foto: fotoInstance])
    }

    def puntuar() {
        redNeuronalOriginalService.entrenarRed(getSession().getValue("idInvitado"), params.fotoId, params.puntaje)
        redirect(action: "indexInvitado")
    }

}
